Software applications have been developed to execute in a distributed manner, wherein a first portion of an application executes on a first device or logical partition, and a second portion of the application executes on a second device or logical partition. For instance, the first device or logical partition may be a client computing device, while the second device or logical partition may be a server computing device that is in communication with the client computing device by way of a network. In operation, a user can initiate the first portion of the application at the client computing device, wherein the first portion of the application is configured to open a communications channel between the client computing device and the server computing device, such that the second portion of the application is initiated.
In an example, the second portion of the application, when executed by the server computing device, can be configured to construct visualizations based upon user input received by the first portion of the application at the client computing device and data retained in data storage that is accessible to the server computing device. Oftentimes, construction of the visualization at the server computing device can be a processing-intensive task, as construction of the visualization (in some applications) can include executing queries over a relatively large database or other suitable data store.
Once the second portion of the application constructs the visualization, the server computing device transmits the visualization by way of a network connection to the client computing device, which then renders the visualization on a display. The user may then interact with the visualization (e.g., request a modification to the visualization), resulting in a request being transmitted to the server computing device to update the visualization or generate an entirely new visualization. The second portion of the application receives the request from the client computing device, performs requisite processing corresponding to the request, and then causes the server computing device to transmit the updated or new visualization back to the client computing device. This approach may negatively impact user experience, as the user is exposed to latencies associated with communications between the client computing device and the server computing device, as well as the processing time at the server computing device to generate the updated or new visualization.